[re:Invent 2019 세션 레포트] Delight your customers with ML-based personalized recommendations #reinvent
안녕하세요! 클래스메소드 주식회사 의 김태우입니다!
저는 이번 re:Invent 2019 컨퍼런스에 머신러닝 관련 토픽들을 집중적으로 듣고싶어서 머신러닝 관련 세션과 핸즈온에 잔뜩 reserve 해두었습니다. 본 세션은 그중에서도 첫번째로 들었던 Delight your customers with ML-based personalized recommendations 라는 제목의 세션입니다.
머신러닝 지식이 전혀 없이도 사용할 수 있는 Amazon Personalize 서비스를 Coursera 와 Voodoo 라는 글로벌 팀에서 어떻게 사용했는지, 아키텍쳐 레벨에서도, 코드레벨에서도 공유받을 수 있었던 정말 좋은 세션이었습니다.
목차
Amazon Personalize 란?
Amazon Personalize 란 개인맞춤형 추천 알고리즘을 머신러닝 기술과 접목시킨 AWS 의 완전관리형 서비스입니다. 딥러닝 및 머신러닝에 대한 지식이 전혀 없어도 사용가능하다는 점에서 굉장한 메리트가 있습니다. 사내에 머신러닝 전문가가 없어도 충분히 Amazon 수준의 추천 알고리즘을 손쉽게 적용할 수 있는데요, 본 세션에서 후반부에 나와서 발표해주셨던 Coursera 머신러닝팀 매니저가 2018년도에 시니어 머신러닝 엔지니어가 꼬박 3달이 걸렸던 수준의 프로젝트가, 2019년도에는 인턴이 Amazon Personalize 서비스를 활용하여 1주일만에 오히려 더 높은 퍼포먼스를 보이는 기능을 구현했다고 극찬했습니다.
Use cases
Use case 로서는 주로
- User Personalization
- Similar Items
- Personalized Ranking
의 3가지에 일반적으로 활용된다고 합니다.
1. User Personalization
각각의 항목에 대하여 좀더 구체적으로 설명해주었습니다.
생각해보면 이제는 거의 표준이 된 UX 를 다시한번 정리해주어서 도움이 많이 되네요!
좌측의 3개의 사진은 구매순입니다. 예전에 구두를 한번 구입한 적이 있지만 최근에는 시계를 연달아서 구매한 경우에는 sequence model 을 적용하여서 구두가 아닌 시계를 추천해준다는 내용의 슬라이드입니다.
다음은 Cold start 에 대한 내용입니다. Serverless 가 아닌 머신러닝도 콜드 스타트 라는 용어를 사용하네요!ㅎㅎ 머신러닝 모델을 적용한 초반에는 데이터가 적은 경우가 많기때문에 제대로 학습이 불가능하여 좋은 퍼포먼스를 얻을 수 없는 경우가 흔합니다. 이때 HRNN 알고리즘(시간의 흐름에 따라 최근 내용을 좀 더 중요하게 여기는 RNN 알고리즘의 한 종류)을 적용하고 있어서, 새로운 아이템이 input 으로 입력 되었을 경우의 콜드스타트에도 잘 대처하고 있다는 내용의 슬라이드 입니다. 좀 더 쉽게 설명하면, 처음 가입한 쇼핑몰에서는 본인의 취향이나 성향에 대한 데이터가 없기때문에 상품을 한번 클릭해봤다던지, 구매를 한번이라도 하면, 해당 내용과 관련한 내용으로 주구장창 추천을 해줬던 경험이 다들 있을 것 같습니다. 이러한 경우가 콜드스타트에 해당하는 경우인데, HRNN 을 적용해서 이러한 개인화된 추천상품에 대해 비교적 효과적으로 대처하고 있다 라고 하는 내용인 것 같습니다.
2. Similar Items
다음으로 Similiar Items 입니다.
보통 상품등의 상세페이지에 등장하는 비슷한 상품 추천 알고리즘인데요, Personalize 를 이용하는 클라이언트 측 입장에서는 위의 User Personalization 을 포함해서 3가지 Use case 전부 동일합니다. 그저 API 를 호출하고(Similiar Items 의 경우, getRecommendations(campaignArn, itemID) 리턴값을 전달받기만 하면 됩니다! 정말 쉽네요ㅎㅎ
내부적으로 좀 더 구체적으로 어떤 방식으로 비슷한 상품을 추천해주냐 하면 item to item collaborative filtering 을 사용한다고 하네요.
근데 collaborative filtering 이라고 해도 단순히 수식을 계산해서 correlation coefficient (공분산) 으로 결과값을 내는 경우도 있고 latent factor models 이나 deep learning 을 활용하는 방법 등 정말 다양한 방법으로 CF(collaborative filtering )를 계산할 수가 있지만, 거기까지는 설명해주지 않았습니다. 아마 recommendation 쪽은 deep learning 이 우수한 퍼포먼스를 보이는 분야 중 하나이므로 deep learning 위주로 구현되어 있을 거라고 지레짐작해봅니다ㅎㅎ
3. Personalized Ranking
마지막으로 Personalized ranking 입니다.
카테고리 페이지에서 보이는 랭킹을 사람마다 다르게 표시해서 보여주는 경우에 해당한다는 내용이네요!
이후부터는 VOODOO 라고 하는 글로벌 게임회사와 다들 알고계실 Coursera 의 머신러닝팀에서 발표해주셨습니다.
VOODOO
VOODOO 소개
VOODOO 는 전세계 1위 게임개발기업이라고 합니다. 앱스토어 순위가 장난아니네요!
정말 다양하고 많은 게임들을 개발하고 출시해서, 유저 데이터가 매우 풍부하고 실시간으로 정보를 계속 수집하며 새로운 게임들을 추천해주고 있다고 합니다.
처음에는 Sagemaker 를 사용했었으나 Sagemaker 엔드포인트를 하루에도 1억번(..ㄷㄷ) 호출해야하고 하루에도 수십억건의 inference 를 처리해야했습니다. 그래서 도입한 것이 Personalize. 사용하는 것이 쉽고 셋업이 매우 빠르고, out of the box 형태로 수많은 use case 를 처리할 수 있는 점이 마음에 들었다고 합니다.
Data Collection
데이터 수집은 EKS 에서 Node.js 엔드포인트를 거쳐 Kinesis Firehose 로 바로 흘려보내버리네요. 그 후에는 데이터 레이크로서 S3 에 저장!
Data Transformation
Airflow 로 워크플로우를 정의하고 EMR 클러스터에서 Spark 를 통해 Personalize 에 제공하기 위한 데이터 형태로 변환합니다.
Personalize
Airflow 를 통해 정의된 워크플로우로서 Personalize 에 정기적으로 데이터를 제공하면 Personalize 에서는 online learning 을 통해 모델을 업데이트하고, Personalize 의 엔드포인트에 다시 EKS 로 운영되는 Node.js 서버 에서 값을 가져와서 실제 모바일 앱에 전달하는 흐름이네요!
Benefits
이렇게 바꾼 뒤로는 retention 이 비약적으로 향상하고 매달 수십개의 새로운 기능을 개발할 수 있게 되었다고 합니다.
Coursera
Coursera 소개
Coursera 의 경우에는, 사실 이글을 읽고 계시는 분들이라면 굳이 소개가 필요없는 온라인 교육 플랫폼이겠네요!
인턴이 1주일만에 일을 저질렀다?!
처음에 잠깐 언급했던 내용이네요.
Architecture
Coursera 에서 Personalize 를 어떤식으로 구성해서 사용하는지 알 수 있는 슬라이드입니다. 자체적인 A/B Test framework 를 거쳐서 최종적으로 디플로이 된다고 합니다.
Model retaining script
보시는대로 이게 전부입니다. 학습은 2줄로 끝나고, 검증은 1줄, 배포도 2줄이면 끝나네요. (물론 실험을 어느정도는 해서 parameter 튜닝을 할 필요는 있겠지만요) 인턴이 1주일만에 추천기능을 개발했다는게 과언은 아닌것 같습니다!
Long-tail issue for SIMS recipe
대상이 되는 아이템 수가 극히 적은 경우에는
- min_cointeraction_count = 3
- min_item_interaction_count_percentile = 0.01
으로 하이퍼 파라미터값을 설정해주면 극복할 수 있다고 합니다.
Personalize 도입 결과
네ㅎㅎ 좋아졌네요!!
HRNN-Metadata recipe
러시아계의 회원에게는 러시아어로 제공되는 강의를 위주로 추천해주고싶을때 위와 같이 설정하면 러시아어를 추천해주네요!
HRNN-metadata recipe 관련한 실습 워크샵 도 한번 진행해보시면 좋을 것 같습니다!
마치며
현재 글을 쓰고 있는 시점이 Andy Jassy re:Invent 2019 의 키노트 세션이 끝난 직후의 시점인데요... 하..... 올해는 정말 머신러닝 계의 서비스가 대박 터졌네요! Personalize 세션 레포트를 작성중이지만 빨리 CodeGuru 나 Sagemaker Studio 한번 만져보고싶네요!ㅋㅋㅋㅋ AWS 는 정말 공부를 해도해도 새로운 기술이 쏟아져서 나와서 더 흥분되고 즐거운 것 같습니다!
그럼 이만-! :D